﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace PreCommitHook.Datos.DaosSqlServer
{
   public class DaoSqlServerAccesoConexion
   {
       #region Atributos
       private static String nombreBD = "Tibet";
       private static String fuenteDatos = "localhost\\SQLEXPRESS";
       private static String cadenaDeConexion = "Data Source =" + FuenteDatos + ";" + "Initial Catalog =" + NombreBD + ";" + "Integrated Security = SSPI;";
       private static SqlConnection conexion = new SqlConnection();
       #endregion

       #region Encapsulamiento
       public static SqlConnection AccederAconexion
       {
           get { return conexion; }
           set { conexion = value; }
       }

       public static String NombreBD
       {
           get { return nombreBD; }
           set { nombreBD = value; }
       }

       public static String FuenteDatos
       {
           get { return fuenteDatos; }
           set { fuenteDatos = value; }
       }

       public void SetCadenaConexion(String fuenteDatos, String nombreBD)
       {
           NombreBD = nombreBD;
           FuenteDatos = fuenteDatos;
           cadenaDeConexion = "Data Source =" + fuenteDatos + ";" + "Initial Catalog =" + nombreBD + ";" + "Integrated Security = SSPI;";
       }

       /// <summary>
       /// Metodo que retorna la cadena de conexion actual a la base de datos.
       /// </summary>
       /// <returns></returns>
       public String GetCadenaConexion()
       {
           return (cadenaDeConexion);
       }
       #endregion

       #region Métodos
       /// <summary>
       /// Metodo que permite establecer conexion con la base de datos.
       /// </summary>
       public void AbrirConexionBd()
       {
           try
           {
               String estadoConexion = null;
               estadoConexion = conexion.State.ToString();

               if (estadoConexion.Equals("Open"))
                   conexion.Close();

               conexion.ConnectionString = GetCadenaConexion();
               conexion.Open();
           }

           catch (SqlException)
           {

           }

       }

       /// <summary>
       /// Metodo que permite cerrar la conexion a la base de datos
       /// </summary>
       public void CerrarConexionBd()
       {
           String estadoConexion = null;
           estadoConexion = conexion.State.ToString();

           if (estadoConexion.Equals("Open"))

               conexion.Close();
       }

       public SqlConnection ObjetoConexion()
       {
           return (conexion);
       }
       #endregion
   }
}
